// 19.44
/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 
 * @param matrix char字符型二维数组 
 * @param word string字符串 
 * @return bool布尔型
 */
 function hasPath( matrix ,  word ) {
  // write code here
  var m = matrix.length
  var n = matrix[0].length
  function dfs(k,i,j){
    if(i < 0 || i >= m || j < 0 || j >= n || matrix[i][j] !== word[k]){
      return false // 有待商量
    }else{
      if(k === word.length - 1){
        return true
      }else{
        // 还要不能走相同的地方
        var temp = matrix[i][j]
        matrix[i][j] = "#"
        var res = dfs(k+1,i-1,j) || dfs(k+1,i+1,j) || dfs(k+1,i,j+1) || dfs(k+1,i,j-1)
        matrix[i][j]=temp
        return res
      }
    }
  }
  for(var i = 0;i < m;i++){
    for(var j = 0;j < n;j++){
      if(dfs(0,i,j)){
        return true
      }
    }
  }
  return false
}
module.exports = {
  hasPath : hasPath
};